/**
 * csui 调试
 * @param {string} method console的方法名, log|error|info|table
 * @param {string} header 前缀
 * @param {boolean}  isDebug 是否开启debug
 * @returns useConsole
 */
function useConsole(
  method: 'log' | 'error' | 'info' | 'table',
  header: string,
  isDebug: boolean
) {
  return function (...arguments_: [...any]) {
    import.meta.env.VITE_CSUI_DEBUG &&
      isDebug &&
      console[method](header, ...arguments_)
  }
}

/**
 * 开启csui 的 console.log
 * @param {string} header 前缀
 * @param {boolean}  isDebug 是否开启debug
 * @returns useConsole
 * @example
 * const log = useLog('abc', true)
 * log('tishi')
 */
export function useLog(header = '', isDebug = false) {
  return useConsole('log', header, isDebug)
}

/**
 * 开启csui 的 console.info
 * @param {string} header 前缀
 * @param {boolean}  isDebug 是否开启debug
 * @returns useConsole
 * @example
 * const info = useInfo('abc', true)
 * info('tishi')
 */
export function useInfo(header = '', isDebug = false) {
  return useConsole('info', header, isDebug)
}

/**
 * 开启csui 的 console.error
 * @param {string} header 前缀
 * @param {boolean}  isDebug 是否开启debug
 * @returns useConsole
 * @example
 * const error = useError('abc', true)
 * error('tishi')
 */
export function useError(header = '', isDebug = false) {
  return useConsole('error', header, isDebug)
}

/**
 * 开启csui 的 console.table
 * @param {string} header 前缀
 * @param {boolean}  isDebug 是否开启debug
 * @returns useConsole
 * @example
 * const log = useTable('abc', true)
 * log('tishi')
 */
export function useTable(header = '', isDebug = false) {
  return useConsole('table', header, isDebug)
}
